#include <string>
#include <vector>
#include <iostream>

using namespace std;

// 自定义类型: 
// vector<Person>
// vector<Car>
// C++ 内建而言: char / bool / int / double / string / vector / ....
// 1. 给类型起一个名字
class Person {
public:
  // 2. 定义这个类型的属性：描述这个类型特征的东西
  // 定义在一个类型内部的变量，叫做这个类型的属性
  string name;
  int age;
  char sex; // 'M' , 'F'
  int height; // 177

public:
  // 3. 定义构造函数 (constructor)
  Person(const string &n, int a, char s, int h) : name(n), age(a), sex(s), height(h) {
    // 构造函数的函数体
    cout << "A person is created." << endl;
  }

  // 4. 给这个类型定义方法：这个类型可以完成的动作
  // 定义在这个类型里面的函数
  void eat(const string &sth) {
    cout << name << " is eating " << sth << "." << endl;
  }

  void getBirthday() {
    ++age;
  }
};

int main(int argc, char const *argv[])
{
  /* code */
  // 创建一个人的时候，就要指定他的这些属性
  Person eleven {"11", 30, 'M', 177};
  cout << eleven.name << endl;
  cout << eleven.sex << endl;
  eleven.eat("an apple.");
  eleven.getBirthday();

  vector<Person> queue;
  return 0;
}
